Week 2 
SE Intro 
    Can explain pros and cons of software engineering :
      softwareEngineering/introduction/prosAndCons  
Revision Control 
    Can use Git to save history :
      revisionControl/what  revisionControl/repositories  gitAndGithub/init  revisionControl/savingHistory  gitAndGithub/commit  gitAndGithub/ignore  
    Can communicate with a remote repo :
      revisionControl/remoteRepositories  gitAndGithub/clone  gitAndGithub/pull  gitAndGithub/push  
    Can traverse Git history :
      revisionControl/usingHistory  gitAndGithub/checkout  gitAndGithub/tag  gitAndGithub/stash  
Design 
    Can explain models :
      modeling/introduction/what  modeling/introduction/how  
    Can explain OOP :
      oop/introduction/what  oop/objects/what  oop/classes/what  oop/objects/abstraction  oop/objects/encapsulation  
    Can explain basic object/class structures :
      modeling/modelingStructures/ooStructures  modeling/modelingStructures/classDiagramsBasic  uml/miscellaneous/objectVsClassDiagrams  
Week 3 
IDEs 
    Can use basic features of an IDE :
      ides/introduction/what  intellij/projectSetup  intellij/codeNavigation  
    Can use intermediate level features of an IDE :
      ides/debugging/what  intellij/debuggingBasic  intellij/productivityShortcuts  
Refactoring 
    Can refactor code at a basic level :
      refactoring/what  intellij/refactoring  refactoring/how  refactoring/when  
Implementation 
    C++ to Java :
      cppToJava/javaWorld/what  cppToJava/javaWorld/how  cppToJava/javaWorld/editions  
    Can implement classes :
      cppToJava/classes/definingClasses :  cppToJava/classes/gettersAndSetters :  
    Can implement class-level members :
      oop/classes/classLevelMembers  
    Can use Java varargs feature :
      javaTools/varargs  
🅿️ Project 
    Can define the target of a product :
      
    Can work with a 1KLoC code base :
      
Week 4 
Testing 
    Can automate simple regression testing of text UIs :
      testing/introduction/what  testing/testingTypes/regressionTesting/what  testing/testAutomation/what  testing/testAutomation/testingTextUis  
Requirements 
    Can explain requirements :
      requirements/introduction  requirements/nonFunctionalRequirements  requirements/prioritizing  requirements/quality  
    Can explain some techniques for gathering requirements :
      gatheringRequirements/brainstorming  gatheringRequirements/productSurveys  gatheringRequirements/observation  gatheringRequirements/userSurveys  gatheringRequirements/interviews  gatheringRequirements/focusGroups  
    Can use some techniques for specifying requirements :
       specifyingRequirements/prose/what   specifyingRequirements/featureList/what   specifyingRequirements/userStories/introduction  specifyingRequirements/userStories/details  specifyingRequirements/userStories/usage   specifyingRequirements/useCases/introduction  specifyingRequirements/useCases/identifying  specifyingRequirements/useCases/details  specifyingRequirements/useCases/usage   specifyingRequirements/glossary/what   specifyingRequirements/supplementaryRequirements/what   gatheringRequirements/prototyping  
Documentation 
    Can use some common documentation tools :
documentation/tools/javaDoc/what  documentation/tools/javaDoc/how   documentation/tools/markdown/what  documentation/tools/markdown/how   documentation/tools/asciiDoc/what  
Implementation 
    Can use Generics in Java :
      cppToJava/generics/what  cppToJava/generics/how  
    Can use Java Collections :
      cppToJava/collections/what  cppToJava/collections/arrayListClass  cppToJava/collections/hashMapClass  
    Can use Java enumerations :
      oop/classes/enumerations  javaTools/enums  
Project Management 
    Can create PRs on GitHub :
revisionControl/branching  gitAndGithub/branch  gitAndGithub/createPRs  
🅿️ Project 
    Can define requirements of a product :
      
Week 5 
Design 
    Can explain single responsibility principle :
      principles/singleResponsibilityPrinciple  
OOP 
    Can explain associations :
oop/associations/what  uml/classDiagrams/associations/what  
    Can explain dependencies among classes :
      oop/associations/dependencies  uml/classDiagrams/dependencies/what  
    Can implement composition :
      oop/associations/composition  uml/classDiagrams/composition/what  
    Can implement aggregation :
      oop/associations/aggregation  uml/classDiagrams/aggregation/what  
    Can implement inheritance :
      oop/inheritance/what  uml/classDiagrams/classInheritance/what  
Implementation 
    Can follow a simple style guide :
      codeQuality/introduction/basic  codeQuality/followStandard/introduction  codeQuality/followStandard/basic  codeQuality/followStandard/intermediate  
    Can improve code readability :
      codeQuality/maximiseReadability/introduction  codeQuality/maximiseReadability/basic/avoidLongMethods  codeQuality/maximiseReadability/basic/avoidDeepNesting  codeQuality/maximiseReadability/basic/avoidComplicatedExpressions  codeQuality/maximiseReadability/basic/avoidMagicNumbers  codeQuality/maximiseReadability/basic/makeCodeObvious  codeQuality/maximiseReadability/intermediate/structureCodeLogically  codeQuality/maximiseReadability/intermediate/dontTripReader  codeQuality/maximiseReadability/intermediate/practiceKISSing  codeQuality/maximiseReadability/intermediate/avoidPrematureOptimizations  codeQuality/maximiseReadability/intermediate/slapHard  codeQuality/maximiseReadability/advanced/makeHappyPathProminent  
Project Management 
    Can follow Forking Workflow :
      revisionControl/forkingWorkflow  gitAndGithub/forkingWorkflow  revisionControl/drcsVsCrcs  revisionControl/featureBranchFlow  revisionControl/centralizedFlow  
    Can use GitHub PRs in a workflow :
gitAndGithub/mergeConflicts  gitAndGithub/managePRs  
🅿️ Project 
Can work with a 2KLoC code base :
      
    Can conceptualize a product :
      
Week 6 
OOP 
    Can explain overloading :
      oop/inheritance/overloading  
    Can implement polymorphism :
oop/inheritance/overriding   oop/polymorphism/what  cppToJava/inheritance/polymorphism   oop/inheritance/abstractClasses  uml/classDiagrams/abstractClasses/what  cppToJava/inheritance/abstractClassesAndMethods   oop/inheritance/interfaces  uml/classDiagrams/interfaces/what  cppToJava/inheritance/interfaces  
Design 
Can interpret an architecture diagram :
design/introduction/what  architecture/architectureDiagrams/reading  designApproaches/multilevelDesign/what  
    Can explain architectural styles :
      architecture/architecturalStyles/introduction/what  architecture/architecturalStyles/nTier/what  architecture/architecturalStyles/clientServer/what  architecture/architecturalStyles/eventDriven/what  architecture/architecturalStyles/transactionProcessing/what  architecture/architecturalStyles/serviceOriented/what  architecture/architecturalStyles/more/moreStyles  architecture/architecturalStyles/more/usingStyles  
    Can use intermediate-level class diagrams :
      uml/notes/notes  uml/notes/constraints  uml/classDiagrams/associationsAsAttributes/what  
Coding best practices 
Can use good naming :
codeQuality/nameWell/introduction  codeQuality/nameWell/basic/nounsAndVerbsAsNames  codeQuality/nameWell/basic/useStandardWords  codeQuality/nameWell/intermediate/useNameExplain  codeQuality/nameWell/intermediate/notTooLongNorShort  codeQuality/nameWell/intermediate/avoidMisleadingNames  
Can avoid unsafe coding practices :
codeQuality/avoidShortcuts/introduction codeQuality/avoidShortcuts/basic/useDefaultBranch codeQuality/avoidShortcuts/basic/dontRecycleVarsOrParams codeQuality/avoidShortcuts/basic/avoidEmptyCatchBlocks codeQuality/avoidShortcuts/basic/deleteDeadCode codeQuality/avoidShortcuts/intermediate/minimiseVariableScope codeQuality/avoidShortcuts/intermediate/minimiseCodeDuplication  
Can write good code comments :
codeQuality/commentMinimally/introduction codeQuality/commentMinimally/basic/dontRepeatObvious codeQuality/commentMinimally/basic/writeToReader codeQuality/commentMinimally/intermediate/explainWhatWhyNotHow  
Project Management 
Can explain continuous integration and continuous deployment :
integration/introduction/what integration/buildAutomation/what integration/buildAutomation/continuousIntegrationDeployment  
🅿️ Project 
Can contribute to project documentation :
      
Week 7 
Design 
Can interpret basic sequence diagrams :
uml/sequenceDiagrams/introduction uml/sequenceDiagrams/basic uml/sequenceDiagrams/loops uml/sequenceDiagrams/objectCreation uml/sequenceDiagrams/minimalNotation modeling/modelingBehaviors/sequenceDiagramsBasic  
Can explain APIs :
reuse/apis/what  
Can use intermediate-level sequence diagrams :
uml/sequenceDiagrams/objectDeletion uml/sequenceDiagrams/selfInvocation uml/sequenceDiagrams/alternativePaths uml/sequenceDiagrams/optionalPaths uml/sequenceDiagrams/referenceFrames modeling/modelingBehaviors/sequenceDiagramsIntermediate uml/sequenceDiagrams/parallelPaths  
Implementation 
Can use logging :
errorHandling/logging/what errorHandling/logging/how  
Can use assertions :
errorHandling/assertions/what errorHandling/assertions/how errorHandling/assertions/when  
Can do exception handling in code :
errorHandling/introduction/what errorHandling/exceptions/what errorHandling/exceptions/how errorHandling/exceptions/when  
Can use Java8 streams :
javaTools/streamsBasic  
Can use JavaFX to build a simple GUI :
javaTools/javaFXBasic  
🅿️ Project 
Can do small changes to an existing software :
      
Week 8 
Design 
Can use basic software design principles :
designFundamentals/abstraction/what designFundamentals/coupling/what designFundamentals/coupling/how designFundamentals/coupling/types designFundamentals/cohesion/what designFundamentals/cohesion/how principles/separationOfConcernsPrinciple principles/openClosedPrinciple  
Implementation 
Can explain integration approaches :
integration/approaches/lateVsEarly integration/approaches/bigBangVsIncremental integration/approaches/topDownVsBottomUp  
Can implement association classes :
oop/associations/associationClasses  
Quality Assurance 
Can explain different types of testing :
testing/testingTypes/unitTesting/what testing/testingTypes/unitTesting/stubs testing/dependencyInjection/what testing/dependencyInjection/how testing/testingTypes/integrationTesting/what testing/testingTypes/integrationTesting/how testing/testingTypes/systemTesting/what testing/testAutomation/testingGuis testing/testingTypes/acceptanceTesting/what testing/testingTypes/acceptanceTesting/acceptanceVsSystemTesting testing/testingTypes/alphaBetaTesting/what  
Can write simple JUnit tests :
testing/testingTypes/developerTesting/what testing/testingTypes/developerTesting/why testing/testAutomation/usingTestDrivers testing/testAutomation/tools junit/basic  
Project Management 
Can use basic scheduling and tracking tools :
projectPlanning/milestones projectPlanning/buffers projectPlanning/issueTrackers projectPlanning/workBreakdownStructure projectPlanning/ganttCharts projectPlanning/pertCharts teamwork/teamStructures  
🅿️ Project 
Can plan/track project schedule :
      
Week 9 
Design 
Can use models to conceptualize an OO solution :
modeling/modelingASolution/introduction modeling/modelingASolution/basic modeling/modelingASolution/intermediate  
Can use intermediate-level design principles :
oop/inheritance/substitutability oop/inheritance/dynamicAndStaticBinding oop/polymorphism/how designApproaches/topDownBottomUp/what designApproaches/agileDesign/what principles/liskovSubstitutionPrinciple principles/interfaceSegregationPrinciple principles/dependencyInversionPrinciple  
Implementation 
Can use defensive programming :
errorHandling/defensiveProgramming/what errorHandling/defensiveProgramming/compulsoryAssociations errorHandling/defensiveProgramming/1to1Associations errorHandling/defensiveProgramming/referentialIntegrity errorHandling/defensiveProgramming/when errorHandling/designByContract/what  
Quality Assurance 
Can use intermediate-level testing techniques :
testing/introduction/testability testing/testCoverage/what testing/testCoverage/how junit/intermediate testing/tdd/what  
Can explain some QA techniques complementary to testing :
qualityAssurance/introduction/what qualityAssurance/introduction/validationVsVerification qualityAssurance/codeReviews/what qualityAssurance/staticAnalysis/what qualityAssurance/formalVerification/what  
Documentation 
Can apply best practices when writing developer documents :
documentation/introduction/what documentation/guidelines/aimForComprehensibility/what documentation/guidelines/aimForComprehensibility/how documentation/guidelines/goTopDown/what documentation/guidelines/goTopDown/why documentation/guidelines/goTopDown/how documentation/guidelines/documentMinimally/what documentation/guidelines/documentMinimally/how architecture/architectureDiagrams/drawing  
🅿️ Project 
Can write developer documentation :
      
Week 10 
SE 
Can explain SE principles :
principles/lawOfDemeter principles/solidPrinciples principles/yagniPrinciple principles/dryPrinciple principles/brooksLaw  
Requirements 
Can use activity diagrams :
modeling/modelingBehaviors/activityDiagrams uml/activityDiagrams/basicNotations/rakes uml/activityDiagrams/basicNotations/swimlanes  
Design 
Can use some basic design patterns :
designPatterns/introduction/what designPatterns/introduction/format designPatterns/singleton/what designPatterns/singleton/implementation designPatterns/singleton/evaluation designPatterns/facade/what designPatterns/command/what  
Implementation 
Can get reuse benefits from frameworks, libraries, and platforms :
reuse/introduction/what reuse/introduction/when reuse/libraries/what reuse/libraries/how reuse/frameworks/what reuse/frameworks/frameworksVsLibraries reuse/platforms/what  
Quality Assurance 
Can explain test case design :
testCaseDesign/introduction/what testing/testingTypes/exploratoryVsScriptedTesting/what testing/testingTypes/exploratoryVsScriptedTesting/when testCaseDesign/introduction/positiveVsNegative testCaseDesign/introduction/blackVsGlass testCaseDesign/more/testingUseCases  
Can use EP for test case design :
testCaseDesign/equivalencePartitions/what testCaseDesign/equivalencePartitions/basic testCaseDesign/equivalencePartitions/intermediate  
Can use Boundary Value Analysis for test case design :
testCaseDesign/boundaryValueAnalysis/what testCaseDesign/boundaryValueAnalysis/how  
🅿️ Project 
Can evolve a product incrementally :
      
Week 11 
Requirements 
Can explain object oriented domain models :
modeling/modelingStructures/objectOrientedDomainModels  
Design 
Can apply some more design patterns :
designPatterns/modelViewController/what designPatterns/observer/what designPatterns/abstractionOccurrence/what designPatterns/more/otherDesignPatterns  
Can optimize the use of design patterns :
designPatterns/more/combiningDesignPatterns designPatterns/more/usingDesignPatterns designPatterns/more/vsPrinciples designPatterns/more/otherTypesOfPatterns  
Quality Assurance 
Can apply heuristics to combine multiple test inputs :
testCaseDesign/combiningTestInputs/why testCaseDesign/combiningTestInputs/combinationStrategies testCaseDesign/combiningTestInputs/heuristicValid testCaseDesign/combiningTestInputs/heuristicInvalid testCaseDesign/combiningTestInputs/mix  
Project Management 
Can explain types of SDLC process models :
processModels/introduction/what processModels/introduction/sequentialModels processModels/introduction/iterativeModels processModels/introduction/agileModels  
Can explain some popular SDLC process models :
processModels/exampleProcessModels/scrum processModels/exampleProcessModels/xp processModels/exampleProcessModels/unifiedProcess processModels/more/cmmi processModels/summary/recap  
🅿️ Project 
Can release a product incrementally :
      
Week 12 
Design 
Can explain some UML models :
modeling/modelingStructures/deploymentDiagrams modeling/modelingStructures/componentDiagrams modeling/modelingStructures/packageDiagrams modeling/modelingStructures/compositeStructureDiagrams modeling/modelingBehaviors/timingDiagrams modeling/modelingBehaviors/interactionOverviewDiagrams modeling/modelingBehaviors/communicationDiagrams modeling/modelingBehaviors/stateMachineDiagrams  
Implementation 
Can explain cloud computing basics :
reuse/cloudComputing/what reuse/cloudComputing/services  
🅿️ Project 
Can describe a technical contribution :
      
Week 13 
🅿️ Project 
Can acceptance-test a product :
      
Can evaluate a technical effort :
      
Can demo a product :